package h0714;

import java.util.Scanner;
/**
  * @description 猴子爬山，动态规划。
  * @author 不知名帅哥
  * @date 2024/7/14 14:07
  * @version 1.0
*/
public class MonkeyClimbMountains {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int methods = getResult(n);
        System.out.println(methods);
    }

    //因为每次只能跳一级或者三级，所以开始是dp[0]=1,dp[1]=1,dp[2]=1
    private static int getResult(int n) {
        int[] dp = new int[n + 1];

        //注意这里的初始化，条件是大于等于。使用动态规划。不能return，要不然就是递归了。
        dp[0] = 1;
        if (n >= 1) {
            dp[1] = 1;
        }
        if (n >= 2) {
            dp[2] = 1;
        }
        for (int i = 3; i <= n; i++) {
            dp[i] = dp[i-1] + dp[i - 3];
        }
        return dp[n];
    }

    private static int getResult1(int n) {
        if (n==0){
            return 1;
        }
        if (n==1){
            return 1;
        }
        if (n==2){
            return 1;
        }
        return getResult(n-1)+getResult(n-3);
    }
}
